/**
 * 判断是否是真正的日期格式
 * @param strDate 日期值 字符串
 * @returns 
 */
export function isdate(strDate: string) {
  let strSeparator = '/'; //日期分隔符
  let strDateArray;
  let intYear;
  let intMonth;
  let intDay;
  let boolLeapYear;
  strDateArray = strDate.split(strSeparator);

  if (strDateArray.length != 3) {
    // alert('日期格式错误');
    return false;
  }

  intYear = parseInt(strDateArray[0], 10);
  intMonth = parseInt(strDateArray[1], 10);
  intDay = parseInt(strDateArray[2], 10);

  if (isNaN(intYear) || isNaN(intMonth) || isNaN(intDay)) {
    // alert('日期格式错误');
    return false;
  }

  if (intMonth > 12 || intMonth < 1) {
    // alert('日期格式错误');
    return false;
  }

  if (
    (intMonth == 1 ||
      intMonth == 3 ||
      intMonth == 5 ||
      intMonth == 7 ||
      intMonth == 8 ||
      intMonth == 10 ||
      intMonth == 12) &&
    (intDay > 31 || intDay < 1)
  ) {
    // alert('日期格式错误');
    return false;
  }

  if (
    (intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) &&
    (intDay > 30 || intDay < 1)
  ) {
    // alert('日期格式错误');
    return false;
  }

  if (intMonth == 2) {
    if (intDay < 1) {
      // alert('日期格式错误');
      return false;
    }

    boolLeapYear = false;
    if (intYear % 100 == 0) {
      if (intYear % 400 == 0) boolLeapYear = true;
    } else {
      if (intYear % 4 == 0) boolLeapYear = true;
    }

    if (boolLeapYear) {
      if (intDay > 29) {
        // alert('日期格式错误');
        return false;
      }
    } else {
      if (intDay > 28) {
        // alert('日期格式错误');
        return false;
      }
    }
  }

  return true;
}

/**
 * 判断是否是真正的日期格式
 * @param str 日期字符串
 * @returns 
 */
export function isDateString(str: string) {
  // 使用正则表达式匹配日期格式
  const pattern = /^\d{4}-\d{2}-\d{2}$/;
  return pattern.test(str);
}
